The invention relates to computer systems for persistently storing data.
Computers typically store information persistently on a persistent storage medium such as a hard disk. Such a medium is called "persistent" because the data stored on it do not change unless and until they are explicitly modified by the computer. To modify persistently stored data, computers typically transfer the data from the persistent storage medium to a transient storage medium, such as a Random Access Memory (RAM). After changes are made to the data in the transient storage medium, the computer may replace the original data on the persistent storage medium with the modified data.
Application programs use a variety of mechanisms to store data persistently. Database systems, for example, typically provide interfaces that allow application programs to store, retrieve, and modify information in databases maintained by the database system. A database system typically has an interface specially designed for communicating with the database system. Different database systems typically provide different interfaces. Applications may also store information persistently in flat files using an interface provided by a file systems.
Object-oriented application programs typically model a problem domain using an "object model" that defines classes of objects representing elements of the problem domain. A class definition defines the class in terms of (1) the relationship of the class to other classes, (2) the data associated with objects in the class, (3) the operations that can be performed on objects in the class. During execution of an object-oriented application program, instances of the classes in the object model, referred to as "objects," are produced and manipulated. For example, software used for biotechnology research might model individual genomes, genes, markers, chromosomes, genotypes, and alleles as objects of different classes. It is often desirable to persistently store representations of such objects.